package sort;

public class InsertionSort implements Sort {

    @Override
    public void sort(Comparable[] array) {
        insertionSort(array, 0, array.length - 1);
    }

    public void insertionSort(Comparable[] arr, int lo, int hi) {
        for (int i = lo; i < arr.length; i++) {
            for (int j = i; j > lo && SortCommon.less(arr[j], arr[j - 1]); j--) {
                SortCommon.swap(arr, j, j - 1);
            }
        }

    }

//    public static void sort(Comparable[] a) {
//
//        int N = a.length; //array length
//
//        for (int i = 0; i < a.length; i++) {
//
//// Insert a[i] in pre-sorted a[i-1], a[i-2], ...
//
//            for (int j = i; j < a.length; j++) {
//
//                double temp = (Double) a[j];
//
//                int k = j;
//
//                // If element k-1 is larger, move it to right 1 index
//
//                while (k > i && a[k - 1].compareTo(temp) > 0) {
//
//                    a[k] = a[k - 1];
//
//                    k = k - 1;
//
//                    a[k] = temp;
//
//                }
//
//            }
//
//        }

}


